package org.sn.jdish.spark.sql;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.SaveMode;

/**
 * 保存save的模式
 * 
 * @author snzigod@hotmail.com
 */
public class SaveModelDemo {

	public static void main(String[] args) {
		/**
		 * SparkConf:第一步创建一个SparkConf，在这个对象里面可以设置允许模式Local Standalone yarn
		 * AppName(可以在Web UI中看到) 还可以设置Spark运行时的资源要求
		 */
		SparkConf sparkConf = new SparkConf().setAppName("sparkSql").setMaster("local");

		/**
		 * 基于SparkConf的对象可以创建出来一个SparkContext Spark上下文
		 * SparkContext是通往集群的唯一通道，SparkContext在创建的时候还会创建任务调度器
		 */
		JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);

		readJson(javaSparkContext);

		javaSparkContext.close();
	}

	public static void readJson(JavaSparkContext javaSparkContext) {
		// 创建DataFrame 读取json
		SQLContext sqlContext = new SQLContext(javaSparkContext);

		DataFrame dataFrame = sqlContext.read().format("json").load("data/people.json");

		dataFrame.write().mode(SaveMode.ErrorIfExists).save("people2.json"); // 报错退出
		dataFrame.write().mode(SaveMode.Append).save("people2.json"); // 追加
		dataFrame.write().mode(SaveMode.Ignore).save("people2.json"); // 忽略错误
		dataFrame.write().mode(SaveMode.Overwrite).save("people2.json");// 覆盖
	}
}
